package com.dtt.learning.service;

import com.dtt.learning.model.Article;
import com.dtt.learning.model.User;
import com.dtt.learning.repository.ArticleRepository;
import com.dtt.learning.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 对前端开放的Rest接口类，所有的接口都可以写在这里，以后可以根据业务拆分类和接口
 *
 * <pre>
 *   @RestController 表示这是一个Rest接口类
 * </pre>
 *
 * @author luodongseu
 */
@RestController
public class RestApiService {

  /**
   * 登录的Rest接口
   *
   * <pre>
   *   @GetMapping("/login") 表示该login函数对应的是一个get请求，请求的url就是/login（当然完整的url需要加上ip，例如http://localhost:8080/login）
   *  @RequestParam("username") 表示取请求的url上的参数，等同于取/login?username=xxx中的username的值，使用了注解后，userName变量就有了xxx值，不需要做额外操作。
   *  还有很多其他注解可以取其他的参数。
   *
   * 该接口的访问示例： GET请求 http://localhost:8080/login?username=x&password=c
   *
   * @param user 登录用户对象
   * @return 登录成功或者登录失败的字符串
   *
   */


  @Autowired
  private UserRepository userRepository;


    @PostMapping("/login")
    public String login(@RequestBody User user) {

        String userName = user.getUserName();
        String pass = user.getPassword();

        if (userRepository.findByUserName(userName) != null) {
            if (userRepository.findByUserNameAndPassword(userName, pass) != null) {
                return "success";
            }
            return "Pwd failed";
      }
        return "failed";
    }

    @Autowired
    private ArticleRepository articleRepository;

    @PostMapping("/new")
    public Article newPaper(@RequestBody Article article) {


        String makerName = article.getAuthorName();
        //MAKERID
        User user1;
        user1 = userRepository.findByUserName(makerName);
        article.setMakeId(user1.getUserId());
        //MAKEDATE
        Date day = new Date();
        article.setMakeDate(day);
        //ARTICLENUM
        long ll_c;
        ll_c = articleRepository.countByAuthorName(makerName);
        ll_c++;
        article.setArticleNo(Long.toString(ll_c));
        article.setArticleName(article.getArticleName());
        Article article1;
        article1 = articleRepository.save(article);
        return article1;

    }

    @PostMapping("/update")
    public Article updatePaper(@RequestBody Article article) {

        Article article1;
        article1 = articleRepository.findByArticleId(article.getArticleId());
        article1.setArticleContent(article.getArticleContent());
        Article article2;
        article2 = articleRepository.save(article1);
        return article2;
    }

    @PostMapping("/delete")
    public void deletePaper(@RequestBody Article article) {

        articleRepository.delete(article);

    }

    @GetMapping("/paper")
    public List<Article> paper() {

//        Article art1 = new Article();
//        Article art2 = new Article();
//        Article art3 = new Article();
//        Date date = new Date();
//        date.setTime(20180331);
//        art1.setArticleId(1);
//        art1.setArticleName("从你的全世界路过");
//        art1.setAuthorName("张嘉佳");
//        art1.setArticleContent("给我哭，哭就对了");
//        art1.setMakeDate(date);
//        art2.setArticleId(2);
//        art2.setArticleName("幻城");
//        art2.setAuthorName("郭敬明");
//        art2.setArticleContent("我们都是杀马特");
//        art2.setMakeDate(date);
//        art3.setArticleId(3);
//        art3.setArticleName("八月未央");
//        art3.setAuthorName("安妮宝贝");
//        art3.setArticleContent("爱就对了，不行就自杀");
//        art3.setMakeDate(date);
        List<Article> itemList = new ArrayList<Article>();
        itemList = articleRepository.findByMakeIdNotNull();
        return itemList;
    }

    @GetMapping("/paper/{userName}")
    public List<Article> paper(@PathVariable("userName") String userName) {
        List<Article> itemList = new ArrayList<Article>();
        itemList = articleRepository.findByAuthorName(userName);
        return itemList;
    }
    @GetMapping("/detail/{id}")
    public Article detail(@PathVariable("id") Integer articleId) {
//        Date date = new Date();
//        date.setTime(20180331);
//        Article art1 = new Article();
//        Article art2 = new Article();
//        Article art3 = new Article();
//        art1.setArticleId(1);
//        art1.setArticleName("从你的全世界路过");
//        art1.setAuthorName("张嘉佳");
//        art1.setArticleContent("《从你的全世界路过》是作者张嘉佳以自己在微博上所讲的33个真实的爱情故事而总结编著成的爱情小说。" +
//                "《从你的全世界路过》最初以“睡前故事”系列的名义在网上疯狂流传，几天内达到1,500,000 次转发，超4亿次阅读，引来电影投资方的巨资抢购，转瞬便签下其中5个故事的电影版权。每1分钟，都有人在张嘉佳的故事里看到自己。" +
//                "《从你的全世界路过》就像朋友在深夜跟你在叙述，叙述他走过的千山万水。当你辗转失眠时，当你需要安慰时，当你等待列车时，当你赖床慵懒时，当你饭后困顿时，应该都能找到一章合适的。" +
//                "这算是一本睡前读物。采用讲故事的形式来讲述一个个平凡却引人深思的故事，它与那些纯粹的鸡汤文不同，故事的切合和说理更让人从心理上认同，因为书中的每一段故事似乎都发生在每一位读者身边。");
//        art1.setMakeDate(date);
//        art2.setArticleId(2);
//        art2.setArticleName("幻城");
//        art2.setAuthorName("郭敬明");
//        art2.setArticleContent("故事发生在虚构的幻雪帝国，冰国王子卡索和自己的弟弟樱空释幼年时流落人间，回到神界后，弟弟为了让哥哥能够自由自在的生活毅然争夺王位，为了达到目的释学习了火族的魔法，并用其杀死了阻拦他争夺王位的人。幻雪帝国陷入一阵恐慌中，卡索最后查出凶手杀死了自己心爱的弟弟。最后他得知弟弟是为了自己而争夺王位，心疼不已。几百年中卡索孤独 的活着，一次他得知幻雪神山中有使人复活的隐莲，在朋友星旧的帮助下，他召集了一批伙伴走进了幻雪神山，开始了自己的拯救之旅。");
//        art2.setMakeDate(date);
//        art3.setArticleId(3);
//        art3.setArticleName("八月未央");
//        art3.setAuthorName("安妮宝贝");
//        art3.setArticleContent("2000年出版的《八月未央》是安妮宝贝第一本小说散文集。" +
//                "5年后安妮宝贝反复重新审视自己写作青春期结束阶段的代表作品，大刀阔斧删除了书中大部分散文篇目，修订版增补替换上的多篇短篇小说都是她各个阶段的代表性作品。新的《八月未央》(修订版)中虚构部分因此而占到绝大部分。" +
//                "《八月未央》(修订版)像安妮宝贝近年其他几本新书一样，也采用了一些独特的设计形式。封面用了她经常穿的一件棉布衣服的局部照片，繁复与华美，一道划破图案的亮银线令其有了几分诡异色彩。封面和简洁内文的配合是为了让这本面貌一新的“旧”书再次显现出她所期望的“某种缓慢坚定”。");
//        art3.setMakeDate(date);

        return articleRepository.findByArticleId(articleId);


    }

}
